/**
 * @author David
 * 
 *  Clase javaScript para la pantalla de adm de Mesa de Examenes 
 *  
 */
$(document).ready(function () {
	$('#responseMessages').hide();
	loadGrid();
	//Cuando carga todo mando a cerrar el gif
	finalizaLoad();
});

/**
 * @author David
 * 
 * Inicializacion de la tabla
 * 
 */
function loadGrid(){
	
	$('#MesaExamenTableContainer').jtable({
        title: 'Mesas de Examen habilitadas',
        paging: true, //Enable paging
        pageSize: 10, //Set page size (default: 10)
        sorting: true, //habilita ordens
//        defaultSorting: 'materia ASC', //Orden default
        selecting: true, //habilita seleccion
//      multiselect: true, // Permite multiple seleccion
//      selectingCheckboxes: true, //Show checkboxes on first column
        actions: {
        	listAction:'../CRUDMesaExamen?action=listMesasExamen'        	          
            , updateAction: '../CRUDMesaExamen?action=updateMesaExamen'
        }	
		, fields: {
            idm: { title: 'IDM', key: true,create: false, edit: false,type : 'hidden'}, 
            Exams: {
                title: '...',
                width: '1%',
                sorting: true,
                edit: false,
                create: false,
                display: function (infoMesa) {
                	//Solo muestro el icono si esta abierta la mesa
                	if(infoMesa.record.estado == 'A'){
	                    //Create an image that will be used to open child table
	                    var $img = $('<img src="../images/list_metro.png" title="Alumnos Inscriptos" />');
	                    //Open child table when user clicks the image
	                    $img.click(function () {
	                        $('#MesaExamenTableContainer').jtable('openChildTable',$img.closest('tr'),{ 
	                        	title: 'Alumnos Inscriptos a la Materia: ' + infoMesa.record.materia,
	                        	actions: {
	                        		listAction: '../CRUDMesaExamen?action=listAlumnosPorMesa&idm=' + infoMesa.record.idm
					                , updateAction : '../CRUDMesaExamen?action=updateNotaAlumno'
	                           	},
	                			fields: {
	                				idm: 		{ title: 'Idm', type: 'hidden', defaultValue: infoMesa.record.idm, edit: false, key : true},
	                                legajoA: 	{ title: 'Legajo', key: true, edit: false},
	                                apenom:		{ title: 'Alumno', width: '30%', edit: false},
	                                carrera:	{ title: 'Carrera', width: '30%', edit: false},		
	                                codigoMe: 	{ title: 'Codigo Materia', edit : false, key : true, type: 'hidden'},
	                                materia:	{ title: 'Materia', width: '20%', edit : false, list: false},
	                                fecha_ins: 	{ title: 'Fecha Insc.', edit: false, type: 'date', displayFormat: 'dd-mm-yy'},
	                                nota: 		{ title: 'Nota', width: '10%', options: ["0","1", "2", "3", "4", "5", "6", "7", "8","9","10"], edit : true}
	                			},
	                			//Una vez que se actualizo satisfactoriamente el registro
	                            recordUpdated: function(event, data){            	
	                            	successAction('');            		
	                                //after record updation, reload the records
	                                $('#MesaExamenTableContainer').jtable('load');
	                            }, 
	                	        /*
	                	         * Esta funcion permite que una vez que se selecciona una fila no se pueda volver a
	                	         * deseleccionar un regstro de la tabla
	                	         */
	                	        recordsLoaded: function(event, data) {
	                	    	   $('.jtable-data-row').click(function() {
	                	    		   $('.jtable-data-row').removeClass('jtable-row-selected');
	                	    		   $(this).addClass('jtable-row-selected');
	                	          });
	                	        }
	                        }, 
	                        function (data) {data.childTable.jtable('load');});
	                    });
	                    //Return image to show on the person row
	                    return $img;
	                }
                }
            },            
            fecha: 			{ title: 'Fecha',width: '8%',create: false,edit: false ,type: 'date',displayFormat: 'dd-mm-yy'},
            libro: 			{ title: 'Libro',create: false,edit : true,width: '5%',inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            folio: 			{ title: 'Folio',create: false,edit: true,width: '5%' ,inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            codigoM: 		{ title: 'Materia',create: false, edit: false,list: false},
            materia:		{ title: 'Materia',width: '12%',edit: false, create: false},
            titular: 		{ title: 'Titular',edit: false,list: false},
            apeNomTitular: 	{ title: 'Titular',width: '10%',edit : false, create: false},
            vocal1: 		{ title: 'Vocal 1',id:'vocal1' ,edit: false ,list: false},
            apeNomV1:		{ title: 'Vocal 1',width: '10%',edit : false , create: false},
            vocal2: 		{ title: 'Vocal 2',edit: false ,list: false,create: false},
            apeNomV2:		{ title: 'Vocal 2',width: '10%',edit: false , create: false },
            cantExam: 		{ title: 'Total ',width: '7%',edit: false, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            cantAus: 		{ title: 'Ausentes',width: '7%',edit: true, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            cantAprob: 		{ title: 'Aprobados',width: '7%',edit: true, inputClass: 'validate[required,custom[integer],min[0]]',defaultValue :'0'},
            carrera:		{ title: 'Carrera', edit: false, create: false, list: false}      
		},
		//Initialize validation logic when a form is created
        formCreated: function (event, data) {
//        	alert(JSON.stringify(data.form));	
            data.form.validationEngine();
        },
        //Validate form when it is being submitted
        formSubmitting: function (event, data) {        	
        	return data.form.validationEngine('validate');        	
        },
        //Dispose validation logic when form is closed
        formClosed: function (event, data) {
            data.form.validationEngine('hide');
            data.form.validationEngine('detach');
        },
		//Una vez que se actualizo satisfactoriamente el registro
        recordUpdated: function(event, data){            	
        	successAction('');            		
            //after record updation, reload the records
           $('#MesaExamenTableContainer').jtable('load');
        }, 
        /*
         * Esta funcion permite que una vez que se selecciona una fila no se pueda volver a
         * deseleccionar un regstro de la tabla
         */
        recordsLoaded: function(event, data) {
    	   $('.jtable-data-row').click(function() {
    		   $('.jtable-data-row').removeClass('jtable-row-selected');
    		   $(this).addClass('jtable-row-selected');
          });
        }                
    });
    /** Carga la lista en la grilla luego ejecuta la inicializacion de los dialogos en modo CallBack  */
    $('#MesaExamenTableContainer').jtable('load');
}

/**
 * En caso de que en la accion haya ocurrido algun error
 * 
 * @author David
 * 
 * @param msg -> mensaje que voy a mostrar en el cuadro de dialogo
 * 
 */
function errorAction(){	
	
	/*
	 * Clase que se quita la fila seleccionada para que al querer cerrarla nuevamente
	 * no quite la seleccion de la fila y no de error de que no se ha seleccionado la fila
	 */
	$('.jtable-row-selected').removeClass('jtable-row-selected');
	setErrorMsg($('#responseMessages'), 'No se pudo realizar la accion deseada!');
	$('#responseMessages').show();	
	setTimeout(function(){           		
		$('#responseMessages').hide();
	}, 10000);	
}


/**
 * Si Salio bien de la accion
 * 
 * @author David
 * 
 * @param msg -> mensaje que voy a mostrar en el cuadro de dialogo
 * 
 */
function successAction(msg){
	
	//Deselecciono los registros de la tabla
	$('.jtable-row-selected').removeClass('jtable-row-selected');
	
	setSuccessMsg($('#responseMessages'), 'Grabado Exitosamente!');
	$('#responseMessages').show();	
	setTimeout(function(){           		
		$('#responseMessages').hide();
	}, 10000);	
//	$('#responseMessages').hide();
}